1. Technical Field
The present disclosure relates to a method for displaying abnormality of a robot that is driven by motors via decelerators.
2. Background Art
With recent global expansion of the robot market, handling a robot in which a failure or an abnormality has occurred has become an important problem. For example, if display of the abnormality of the robot does not show the actual state of the failure, a serviceperson needs to go directly to the site where the abnormality has occurred, check the situations, and thereafter take measures. As a result, it is difficult to promptly solve abnormal states every part of the world.
Of course, it is also necessary to address collision of a robot with objects therearound that is caused not by a failure in the robot but, for example, by erroneous teaching from the user. If a robot and objects around the robot are broken by a collision, a serviceperson needs to be dispatched for repair and it may be some time before the robot is returned to a normal state. Accordingly, it is desired that to enhance the accuracy of collision detection. For example, a high-accuracy collision sensor may be installed in a robot in order to promptly detect failure in the robot. However, a high-accuracy collision sensor installed in a robot is an excessive weight load for the robot, which increases the cost. Therefore, in recent years, higher-accuracy sensor-less collision detection has been promoted.
However, the higher-accuracy sensor-less collision detection increases the possibility of erroneously detecting an abnormal state of a robot as a collision even when no actual collision has occurred. That is, when a failure of the robot has occurred, a collision detection function detects that a collision has occurred as an abnormality before other abnormality detection functions are able to detect whether a abnormality different from the collision has occurred. This poses a possibility of erroneously displaying “occurrence of collision” even though no collision has occurred. As described above, the higher-accuracy sensor-less collision detection has an advantage of promptly detecting a failure, but makes it difficult for the cause of the failure to be identified. The reasons why collision is erroneously detected are described with reference to FIG. 1 through FIG. 12.
FIG. 1 is a schematic configuration diagram of a vertical articulated six-shaft robot as a typical example of a robot. As shown in FIG. 1, the vertical articulated six-shaft robot has robot mechanism (101), robot controller (102), and operation display unit (103).
FIG. 2 is a flowchart showing whole processing of an abnormality display. The whole processing of the abnormality display is performed in robot controller (102). Besides collision detection processing, FIG. 2 includes motor lock detection processing, overload detection processing, and position deviation over detection processing for detecting abnormality at occurrence of a failure in the robot. The whole processing of the abnormality display shown in FIG. 2 is repeated every cycle ΔT, where several milliseconds are assumed for the cycle ΔT.
With reference to FIG. 2, motor lock detection processing is performed in Step 2-1. In Step 2-6, upon detection of a motor lock, “motor lock detected” is shown in operation display unit (103) of FIG. 1, as an abnormality display. When a motor lock is detected, an abnormal state has already occurred and an abnormality display is made. Thus, in Step 2-6, the abnormality display processing is completed. When no motor lock is detected in Step 2-6, processing proceeds to Step 2-2.
Next, in Step 2-2, overload detection processing is performed. In Step 2-7, upon detection of an overload, “overload detected” is shown in operation display unit (103) of FIG. 1, as an abnormality display. When an overload is detected, an abnormal state has already occurred and an abnormality display is made. Thus, in Step 2-7, the abnormality display processing is completed. When no overload is detected in Step 2-7, processing proceeds to Step 2-3.
Next, in Step 2-3, position deviation over detection processing is performed. In Step 2-8, upon detection of a position deviation over, “position deviation over detected” is displayed in operation display unit (103) of FIG. 1, as an abnormality display. When a position deviation over is detected, an abnormal state has already occurred and an abnormality display is made. Thus, in Step 2-8, the abnormality display processing is completed. When no position deviation over is detected in Step 2-8, processing proceeds to Step 2-4.
Next, in Step 2-4, collision detection processing is performed. The processing will be described below with reference to FIG. 3.
Methods for calculating collision force in a sensor-less manner include a dynamic operation method and a disturbance estimation observer method. In the dynamic operation method, first, decelerator output torque is calculated by subtracting, from the torque generated by the driving current of the motor, the torque lost by the inertia of a motor and decelerator and the friction. Next, collision force is calculated by subtracting the dynamic torque of the robot obtained by the dynamic operation of the robot, from the decelerator output torque (see Non-Patent Literature 1, for example). In the disturbance estimation observer method, collision force is calculated with a disturbance estimation observer (see Patent Literature 1, for example). Hereinafter, with reference to FIG. 3, as an example, a description is provided for the dynamic operation method, which is excellent in estimation accuracy.
FIG. 3 is a control block diagram in the dynamic operation method. With reference to FIG. 3, position control block (6) receives motor position θm (4), and position command θcom (3) obtained by integrating velocity component dθcom of position command (1) with integration element 40. Based on the value of difference between position command θcom (3) and motor position θm (4), velocity loop command ωcom (7) is output from position proportional gain (5).
With reference to FIG. 3, velocity control block (10) receives velocity loop command ωcom (7) and motor position θm (4). The velocity control block obtains the value of difference between velocity loop command ωcom (7) and motor velocity ωm (2) calculated by differentiating motor position θm (4) with differentiation element (32). Then, the velocity control block outputs motor current Im (11) via velocity proportional gain (8) and velocity integration gain (9).
With reference to FIG. 3, in block showing motor and external force (18), τm (13) is motor generating torque. Assuming that the decelerator is a rigid body, τm is expressed by Equation (1) on the motor driving side and expressed by Equation (2) on the load side.τm=Kt×Im  (1)τm=τdyn+τdis+Jm×αm±D×ωm±τμ  (2)The marks in Equation (1) and Equation (2) have the following meanings:
Kt (12): Motor torque constant
Im (11): Motor current
αm (90): Motor acceleration (differentiation value of ωm)
ωm (2): Motor velocity
Jm (89): Motor inertia (rotor+primary side of decelerator)
D (20): Viscous friction coefficient
τμ (15): Dynamic friction torque
τdyn (14): Dynamic torque (sum of gravity torque, inertial force, centrifugal force, and Coriolis force)
τdis (16): Collision torque
Dynamic friction torque τμ (15) can be calculated by the following Equation (3):τμ=Kμ×sgn  (3).
In this Equation, Kμ is a magnitude of dynamic friction, sgn is “1” when ωm>0, “0” when ωm=0, and “−1” when ωm<0.
Collision torque τdis (16) can be obtained by changing Equation (1) and Equation (2) into the following Equation (4):τdis=Kt×Im·(Jm×αm+D×ωm+τμ+τdyn)  (4)
In FIG. 3, Equation (4) is expressed as collision torque estimation block (30).
In collision torque estimation block (30), dynamic torque estimation value τdyno (29) can be obtained by a dynamic operation performed by dynamic torque operation block (26). Dynamic torque operation block (26) performs the dynamic operation using motor position θm (4) of each of all the shafts forming the robot, motor velocity ωm (2) obtained by differentiating motor position θm (4), motor acceleration am (90) obtained by differentiating motor velocity ωm (2), and mechanics parameters (arm length, arm mass, gravity position, and inertia around gravity position) of the robot. Using this dynamic torque estimation value τdyno (29), collision torque estimation block (30) outputs collision torque estimation value τdiso (28) to collision determination block (31).
Collision determination block (31) detects a collision, using predetermined collision detection threshold τth, in accordance with the following Expression (5):|τdiso|>τth  (5)
In Step 2-5, the following processing is performed. When Expression (5) holds, “collision detected” is displayed as an abnormality display in operation display unit (103) of the robot shown in FIG. 1, and the abnormality display processing is completed. When Expression (5) does not hold, the abnormality display processing is completed without the abnormality display. The whole processing of the abnormality display is started every cycle ΔT.
In the collision detection as described above, accurate calculation of dynamic torque estimation value τdyno (29) can provide accurate collision torque estimation value τdiso (28).
The methods for calculating the dynamic torque in dynamic torque operation block (26) include the Lagrangian method and the Newton-Euler method. In the Lagrangian method, a vertical articulated six-shaft robot requires product-sum operations at a little less than 100 thousand times. However, the processing capability of a present CPU achieves this amount of operations within several milliseconds. The Newton-Euler method requires product-sum operations only at a little less than 10 thousand times, and thus the operation time poses no problem. However, the Newton-Euler method is a so-called recurrence formula method, in which the result of previous expression is used for the next expression, and thus a cumulative error in operation can occur. However, when processing is made on data of 32 bit or higher, the cumulative error in operation poses no problem. Therefore, in each of the methods, the present CPU can calculate dynamic torque τdyn (14) within a tolerance of a 10% motor maximum torque ratio. When the terms other than dynamic torque τdyn (14) on the right side of Equation (4) can also be calculated within a tolerance of a 10% motor maximum torque ratio, collision torque estimation value τdiso (28) can be obtained within a tolerance of a 20% motor maximum torque ratio.
The collision detection in accordance with Expression (5) uses an instantaneous value of collision torque estimation value τdiso (28) obtained by Equation (4). Thus, after a lapse of several milliseconds, i.e. a calculation time, dynamic torque τdyn (14) can be determined. That is, in the collision detection function, after an abnormality at a motor maximum torque ratio of approximately 20% is observed only for several milliseconds, a collision can be detected.
However, if collision detection threshold τth is set low (at a motor maximum torque ratio of approximately 20%), even an abnormality other than collision is detected immediately. For instance, suppose a failure in a motor (bearing or brake) or a decelerator increases the actual dynamic friction torque. In this case, if the robot is attempted to operate in a manner similar to that in the normal state, motor generating torque τm needs to be increased by the increment of dynamic friction torque τμ. In order to increase motor generating torque τm, motor current Im on the right side of Equation (4) is increased. However, dynamic friction torque τμ on the right side of Equation (4) is calculated, using the values measured in the normal state, and thus collision torque τdis on the left side of Equation (4) increases although no collision has occurred. If the magnitude of collision torque τdis becomes greater than a motor maximum torque ratio of 20% only for several milliseconds, a collision is erroneously detected.
In the method for calculating collision force in a sensor-less manner, the causes of increases in motor current Im on the right side of Equation (4) and in collision torque τdis cannot be identified. That is, it cannot be identified whether the increases are caused by the actual collision of the robot or by the increase in friction torque resulting from a failure in the motor or the decelerator. Thus, if collision detection threshold τth is set low (i.e. higher collision detection sensitivity) so that the damage at the collision of the robot is minimized, the probability of erroneous collision detection is increased.
On the other hand, aside from the collision detection function, a motor lock detection function and an overload detection function are provided as functions for detecting that rotation of a motor has been slowed by a failure in the motor (bearing and brake) or the decelerator.
The motor lock detection function detects the situations where the motor continues to be difficult to move even when the user attempts to operate the motor. If motor generating torque τm (shown in Equation (1)) is equal to or greater than predetermined motor torque threshold τmth (91) but the friction torque increased by the failure is large, motor velocity ωm (2) does not exceed predetermined motor velocity threshold ωmth. When this state continues for predetermined motor lock detection time threshold LKth or longer, the motor lock detection function determines that the state is abnormal.
A description is provided for the motor lock detection function with reference to FIG. 5A and FIG. 5B. FIG. 5A is a graph showing motor velocity ωm (2) and motor generating torque τm (13) in the normal state. After motor generating torque τm (13) has exceeded motor torque threshold τmth (91), and time LKO (95), which is shorter than motor lock detection time threshold LKth, (93) has elapsed, motor velocity ωm (2) exceeds motor velocity threshold ωmth (92). In this case, a motor lock is not detected.
FIG. 5B is a graph showing motor velocity ωm (2) and motor generating torque τm (13) in the abnormal state where a motor lock that has resulted from an increase in friction torque caused by a failure in a motor or a decelerator is detected. In FIG. 5B, even after motor generating torque τm (13) has exceeded motor toque threshold τmth (91), the increase in friction torque caused by the failure in the motor or the decelerator makes the increase in motor velocity ωm (2) slower than that in the normal state (shown by the dotted line). Thus, motor velocity ωm (2) does not reach motor velocity threshold ωmth (92) even when motor lock detection time threshold LKth (93) is exceeded. In this case, a motor lock is detected.
FIG. 4 is a flowchart for motor lock detection. The motor lock detection processing is performed every constant cycle ΔT.
In Step 4-1, it is determined whether or not motor generating torque τm is equal to or greater than motor torque threshold τmth (91). When motor generating torque τm is equal to or greater than motor torque threshold τmth (91), the determination is “Y” and processing proceeds to Step 4-2.
In Step 4-2, it is determined whether or not motor velocity ωm (2) is equal to or less than motor velocity threshold ωmth (92). When motor velocity ωm (2) is equal to or less than motor velocity threshold ωmth (92), the determination is “Y” and processing proceeds to Step 4-3.
In Step 4-3, motor lock duration time LKdet is calculated by Equation (6), and processing proceeds to Step 4-5.LKdet=LKdet+ΔT  (6).
Here, ΔT is a motor lock detection processing cycle.
That is, in Step 4-3, measurement is made by adding the time lengths when “Y” is determined both in Step 4-1 and Step 4-2 every motor lock detection processing cycle ΔT.
When the determination in Step 4-1 or Step 4-2 is “N”, processing proceeds to Step 4-4 and motor lock duration time LKdet is reset to 0. Thus, the motor lock detection processing is completed.
In Step 4-5, it is determined whether or not motor lock duration time LKdet is equal to or greater than motor lock detection time threshold LKth (93) in accordance with following Expression (7):LKdet≧LKth  (7)
When motor lock duration time LKdet is equal to or greater than motor lock detection time threshold KLth (93), the determination is “Y”, and processing proceeds to Step 4-6. In this case, it is determined that the motor is in a motor lock state, and the motor is stopped in Step 4-6. Subsequently, in Step 4-7, “motor lock detected” is shown as an abnormality display, and the motor lock detection processing is completed. The abnormality display is shown in operation display unit (103) of FIG. 1.
When the determination in Step 4-5 is “N”, it is determined that the motor is not in the motor lock state, and the motor lock detection processing is completed.
In this motor lock detection function, time LKO (95) is taken for a motor to reach a motor velocity equal to or greater than motor velocity threshold ωmth (92) with a motor torque equal to or greater than motor torque threshold τmth (91) in the normal state. Thus, motor lock detection time threshold LKth (93) needs to be set longer than time LKO (95) taken in the normal state. The taken time varies with the size of the robot, and motor lock detection time threshold LKth (93) ranges from several hundred milliseconds to several seconds, which is longer than the detection performed within several milliseconds by the collision detection function. That is, if collision detection threshold τth is set low (e.g. higher collision detection sensitivity), a collision is detected earlier than detection of a motor lock, even though no actual collision has occurred. Thus, only “collision detected” is shown as an abnormality display. This phenomenon is described with reference to FIG. 2. While the determination in the motor lock detection in Step 2-6 stays “N”, the determination in the collision detection in Step 2-5 is “Y”.
Next, an overload detection function is described.
In the overload detection function, an overload abnormality is detected so that the time-cumulative value of the current for driving the motor does not exceed the limit value of the motor time-limit characteristic curve. The motor generating torque is proportional to the current for driving the motor, and the limit value of the motor time-limit characteristic curve shows the upper limit of the temperature of the windings of the motor. FIG. 7 is a graph showing the relation between the motor current for driving the motor and a time. For instance, the limit value (dotted line) of the motor time-limit curve shown in FIG. 7 is approximately 100 seconds at a maximum current ratio of 40%, 25 seconds at a maximum current ratio of 50%, and approximately 8 seconds at a maximum current ratio of 70%. Overload detection is made so that the time-cumulative value is equal to or less than this limit value.
FIG. 6 is a flowchart for overload detection. Overload detection processing is performed every constant cycle ΔT.
In Step 6-1, overload detection value OLdet is obtained by the following Equation (8):OLdet=OLdet+(|Im|−Imth)×ΔT  (8).
Here, Imth is an overload detection current threshold and ΔT is an overload detection cycle.
Next, in Step 6-2, it is determined whether or not overload detection value OLdet is equal to or greater than overload threshold OLth. That is, it is determined whether or not conditions for the following Expression (9) are satisfied.OLdet≧OLth  (9)
When Expression (9) holds, the determination is “Y”, that is, the motor is in the overload state, and processing proceeds to Step 6-3. In Step 6-3, the motor is stopped. Subsequently, in Step 6-4, “overload detected” is shown as an “abnormality display”, and the overload detection processing is completed. The “abnormality display” is shown in operation display unit (103) of FIG. 1.
When the determination in Step 6-2 is “N”, it is determined that the motor is not in the overload state, and the overload detection processing is completed.
In FIG. 8, an overload detection threshold characteristic of OLdet=OLth in Expression (9) is shown by the solid line. The overload detection threshold characteristic (solid line) in FIG. 8 shows the case where Imth=33 and OLth=100. The overload detection threshold characteristic (solid line) is set less than the limit value (dotted line). This shows that the method for calculating overload detection value OLdet shown in Equation (8) is adequate.
As shown in FIG. 8, overload detection takes several seconds even when the motor current is at a maximum current ratio of 100%. The time taken for this overload detection is longer than that of the detection performed within several milliseconds by the collision detection function. That is, if a failure occurs in a motor or a decelerator from the state where no overload abnormality occurs, the motor rotates slowly, which increases the motor current (motor generating torque) at a maximum current ratio of approximately 20%. In this manner, when a failure occurs in a motor or a decelerator, detection of overload abnormality takes several seconds at minimum. Thus, it is highly possible that a collision is erroneously detected before the detection of the overload abnormality. This phenomenon is described with reference to FIG. 2. While the determination in the overload detection in Step 2-7 stays “N”, the determination in the collision detection in Step 2-5 is “Y”.
Next, a description is provided for erroneous detection in the collision detection processing shown in FIG. 3.
That is, also when an abnormality occurs in motor position detector (99) for detecting motor position θm (4), a collision can be detected erroneously.
Dynamic torque operation block (26) uses motor acceleration am (90) generated by differentiating motor position θm (4) twice. Thus, a change in motor position θm (4) considerably affects motor acceleration am (90).
Generally, differentiation in digital control is performed with a difference between the present sample value and the sample value in the previous cycle. An example is shown below.
FIG. 9 is a graph showing motor position waveforms at occurrence of abnormality of the motor position detector. FIG. 10 is a graph showing velocity waveforms at occurrence of the abnormality of the motor position detector. FIG. 11 is a graph showing acceleration waveforms at occurrence of the abnormality of the motor position detector. These graphs show the waveforms when the motor reaches the state where motor velocity ωm (2) is 50 rotations/second (=3000 rpm) for 0.5 second at an equal acceleration (100 rotations/second2) from the stop state where motor position θm (4) is at the zero position. Here, the sample cycle is repeated every five milliseconds, and motor position θm (4) after 500 milliseconds is where the motor has made approximately 12.5 rotations as shown in FIG. 9. FIG. 9 shows the case where abnormality of motor position detector (99) at a time point of 300 milliseconds has hindered reading of motor position θm (4). In this case, motor position θm (4) in the previous sample value (at a time point of 295 milliseconds) is not updated and remains.
When error eθm (86) in motor position θm (4) at occurrence of the abnormality at a time point of 300 milliseconds is calculated in reference to the value after 500 milliseconds (12.5 rotations), the error is approximately 4.7% (approximately 0.15 rotation). When error eωm (87) in motor velocity ωm (2) is calculated in reference to the value after 500 milliseconds (50 rotations/second) in FIG. 10, the error is approximately 120%. When error eαm (88) in motor velocity αm (90) is calculated in reference to the value after 500 milliseconds (100 rotations/second2) in FIG. 11, the error is approximately −3333%. Therefore, it is highly possible that these errors considerably affect the accuracy of dynamic torque τdyn (14) to be obtained in dynamic torque operation block (26) and cause erroneous detection of a collision.
In the method for calculating collision force in a sensor-less manner, the cause of no change in motor position θm (4) cannot be identified. That is, it is unclear whether an actual collision has stopped the robot or abnormality of motor position detector (99) has hindered update of motor position θm (4). Thus, when the collision detection function is attempted to operate effectively, erroneous collision detection cannot be avoided.
On the other hand, aside from the collision detection function, a position deviation over detection function is used as a function of detecting abnormality of motor position detector (99) for detecting motor position θm (4).
Next, a description is provided for the position deviation over detection function.
FIG. 12 is a flowchart for position deviation over detection. Position deviation over detection processing is performed every constant cycle ΔT.
In Step 12-1, as shown in the following Equation (10), position deviation over detection value Met is calculated as the absolute value of the difference between position command θcom (3) and motor position θm (4):θdet=|θcom−θm|  (10)
In Step 12-2, position deviation over detection value θdet is compared with position deviation over detection threshold θth, and it is determined whether or not conditions for the following Expression (11) are satisfied.θdet≧θth  (11)
When position deviation over detection value Met is equal to or greater than position deviation over detection threshold θth, the determination is “Y”, and processing proceeds to Step 12-3. In this case, a position deviation over state is determined and the motor is stopped in Step 12-3. Subsequently, “position deviation over” is shown as an abnormality display in Step 12-4, and the position deviation over detection processing is completed. The abnormality display is shown in operation display unit (103) of FIG. 1.
When the determination in Step 12-2 is “N”, no position deviation over state is determined and the position deviation over detection processing is completed.
In order to prevent erroneous detection of the position deviation caused by a control delay in this position deviation over detection, position deviation over detection threshold θth in Expression (11) is set to approximately several rotations.
For instance, suppose that the position deviation caused by a control delay is one rotation and position deviation over detection threshold θth is set to two rotations. In this case, even when the error in motor position θm (4) (approximately 0.15 rotation) at occurrence of the abnormality at 300 milliseconds in FIG. 9 is added, position deviation over detection value Met is approximately 1.15 rotations. Thus, Expression (11) does not hold, and position deviation over is not detected. However, this considerably affects the accuracy of dynamic torque τdyn (14) to be calculated in dynamic torque operation block (26), and thus a collision is detected erroneously. That is, a collision is detected earlier, even though no actual collision has occurred. Thus, only “collision detected” is shown as an abnormality display. This phenomenon is described with reference to FIG. 2. While the determination in the position deviation over detection in Step 2-8 stays “N”, the determination in the collision detection in Step 2-5 is “Y”.
As abnormality display processing at occurrence of collision detection in Step 2-5 in FIG. 2, conventional processing of a single abnormality display shown in FIG. 20 is performed.
As described above, since abnormality detections in Step 2-1 through Step 2-3 take time, collision detection in Step 2-4 is performed earlier and only “collision detected” is shown as an abnormality display in Step 2-5.
Related prior arts are Japanese Patent No. 3367641 and Kosuga Kazuhiro et. al., “Dynamic Collision Detection of Manipulator”, The Japan Society of Mechanical Engineers [No. 99-9] Lecture theses of Robotics and Mechatronics Lecture Meeting in 1999 2A1-11-030.